<?php
/** ******************************************************************************
 * brophp.com URL解析类，用于将所有请求的URL转为PATHINFO的格式。                 *
 * *******************************************************************************
 * 许可声明：专为《细说PHP》读者及LAMP兄弟连学员提供的“学习型”超轻量级php框架。*
 * *******************************************************************************
 * 版权所有 (C) 2011-2013 北京易第优教育咨询有限公司，并保留所有权利。           *
 * 网站地址: http://www.lampbrother.net (LAMP兄弟连)                             *
 * *******************************************************************************
 * $Author: 高洛峰 (skygao@lampbrother.net) $                                    *
 * $Date: 2011-07-18 10:00:00 $                                                  * 
 * ******************************************************************************/
class Prourl {
	/**
	 * URL路由,转为PATHINFO的格式
	 */
	static function parseUrl() {
		if (isset ( $_SERVER ['PATH_INFO'] )) {
			// 获取 pathinfo
			$pathinfo = explode ( '/', trim ( $_SERVER ['PATH_INFO'], "/" ) );
			
			// 获取 control
			$_GET ['m'] = (! empty ( $pathinfo [0] ) ? $pathinfo [0] : 'index');
			
			array_shift ( $pathinfo ); // 将数组开头的单元移出数组
			                           
			// 获取 action
			$_GET ['a'] = (! empty ( $pathinfo [0] ) ? $pathinfo [0] : 'index');
			array_shift ( $pathinfo ); // 再将将数组开头的单元移出数组
			
			for($i = 0; $i < count ( $pathinfo ); $i += 2) {
				$_GET [$pathinfo [$i]] = $pathinfo [$i + 1];
			}
		} else {
			$_GET ["m"] = (! empty ( $_GET ['m'] ) ? $_GET ['m'] : 'index'); // 默认是index模块
			$_GET ["a"] = (! empty ( $_GET ['a'] ) ? $_GET ['a'] : 'index'); // 默认是index动作
			
			if ($_SERVER ["QUERY_STRING"]) {
				$m = $_GET ["m"];
				unset ( $_GET ["m"] ); // 去除数组中的m
				$a = $_GET ["a"];
				unset ( $_GET ["a"] ); // 去除数组中的a
				$query = http_build_query ( $_GET ); // 形成0=foo&1=bar&2=baz&3=boom&cow=milk格式
				                                     // 组成新的URL
				$url = $_SERVER ["SCRIPT_NAME"] . "/{$m}/{$a}/" . str_replace ( array (
						"&",
						"=" 
				), "/", $query );
				header ( "Location:" . $url );
			}
		}
	}
}
